from enum import IntEnum
from typing import overload, NewType, Optional, Tuple

from OCC.Core.Standard import *
from OCC.Core.NCollection import *
from OCC.Core.MAT import *
from OCC.Core.TopTools import *
from OCC.Core.TopoDS import *
from OCC.Core.gp import *
from OCC.Core.TColStd import *
from OCC.Core.Geom import *
from OCC.Core.Geom2d import *
from OCC.Core.AppParCurves import *
from OCC.Core.GeomPlate import *
from OCC.Core.Adaptor3d import *
from OCC.Core.GeomAbs import *
from OCC.Core.GeomFill import *
from OCC.Core.AppCont import *
from OCC.Core.BRepMAT2d import *
from OCC.Core.Law import *
from OCC.Core.Bisector import *
from OCC.Core.TColgp import *

# the following typedef cannot be wrapped as is
BRepFill_IndexedDataMapOfOrientedShapeListOfShape = NewType("BRepFill_IndexedDataMapOfOrientedShapeListOfShape", Any)

class BRepFill_ListOfOffsetWire:
    def __init__(self) -> None: ...
    def __len__(self) -> int: ...
    def Size(self) -> int: ...
    def Clear(self) -> None: ...
    def First(self) -> BRepFill_OffsetWire: ...
    def Last(self) -> BRepFill_OffsetWire: ...
    def Append(self, theItem: BRepFill_OffsetWire) -> BRepFill_OffsetWire: ...
    def Prepend(self, theItem: BRepFill_OffsetWire) -> BRepFill_OffsetWire: ...
    def RemoveFirst(self) -> None: ...
    def Reverse(self) -> None: ...
    def Value(self, theIndex: int) -> BRepFill_OffsetWire: ...
    def SetValue(self, theIndex: int, theValue: BRepFill_OffsetWire) -> None: ...

class BRepFill_SequenceOfEdgeFaceAndOrder:
    def __init__(self) -> None: ...
    def __len__(self) -> int: ...
    def Size(self) -> int: ...
    def Clear(self) -> None: ...
    def First(self) -> BRepFill_EdgeFaceAndOrder: ...
    def Last(self) -> BRepFill_EdgeFaceAndOrder: ...
    def Length(self) -> int: ...
    def Append(self, theItem: BRepFill_EdgeFaceAndOrder) -> BRepFill_EdgeFaceAndOrder: ...
    def Prepend(self, theItem: BRepFill_EdgeFaceAndOrder) -> BRepFill_EdgeFaceAndOrder: ...
    def RemoveFirst(self) -> None: ...
    def Reverse(self) -> None: ...
    def Value(self, theIndex: int) -> BRepFill_EdgeFaceAndOrder: ...
    def SetValue(self, theIndex: int, theValue: BRepFill_EdgeFaceAndOrder) -> None: ...

class BRepFill_SequenceOfFaceAndOrder:
    def __init__(self) -> None: ...
    def __len__(self) -> int: ...
    def Size(self) -> int: ...
    def Clear(self) -> None: ...
    def First(self) -> BRepFill_FaceAndOrder: ...
    def Last(self) -> BRepFill_FaceAndOrder: ...
    def Length(self) -> int: ...
    def Append(self, theItem: BRepFill_FaceAndOrder) -> BRepFill_FaceAndOrder: ...
    def Prepend(self, theItem: BRepFill_FaceAndOrder) -> BRepFill_FaceAndOrder: ...
    def RemoveFirst(self) -> None: ...
    def Reverse(self) -> None: ...
    def Value(self, theIndex: int) -> BRepFill_FaceAndOrder: ...
    def SetValue(self, theIndex: int, theValue: BRepFill_FaceAndOrder) -> None: ...

class BRepFill_SequenceOfSection:
    def __init__(self) -> None: ...
    def __len__(self) -> int: ...
    def Size(self) -> int: ...
    def Clear(self) -> None: ...
    def First(self) -> BRepFill_Section: ...
    def Last(self) -> BRepFill_Section: ...
    def Length(self) -> int: ...
    def Append(self, theItem: BRepFill_Section) -> BRepFill_Section: ...
    def Prepend(self, theItem: BRepFill_Section) -> BRepFill_Section: ...
    def RemoveFirst(self) -> None: ...
    def Reverse(self) -> None: ...
    def Value(self, theIndex: int) -> BRepFill_Section: ...
    def SetValue(self, theIndex: int, theValue: BRepFill_Section) -> None: ...

class BRepFill_ThruSectionErrorStatus(IntEnum):
    BRepFill_ThruSectionErrorStatus_Done: int = ...
    BRepFill_ThruSectionErrorStatus_NotDone: int = ...
    BRepFill_ThruSectionErrorStatus_NotSameTopology: int = ...
    BRepFill_ThruSectionErrorStatus_ProfilesInconsistent: int = ...
    BRepFill_ThruSectionErrorStatus_WrongUsage: int = ...
    BRepFill_ThruSectionErrorStatus_Null3DCurve: int = ...
    BRepFill_ThruSectionErrorStatus_Failed: int = ...

BRepFill_ThruSectionErrorStatus_Done = BRepFill_ThruSectionErrorStatus.BRepFill_ThruSectionErrorStatus_Done
BRepFill_ThruSectionErrorStatus_NotDone = BRepFill_ThruSectionErrorStatus.BRepFill_ThruSectionErrorStatus_NotDone
BRepFill_ThruSectionErrorStatus_NotSameTopology = BRepFill_ThruSectionErrorStatus.BRepFill_ThruSectionErrorStatus_NotSameTopology
BRepFill_ThruSectionErrorStatus_ProfilesInconsistent = BRepFill_ThruSectionErrorStatus.BRepFill_ThruSectionErrorStatus_ProfilesInconsistent
BRepFill_ThruSectionErrorStatus_WrongUsage = BRepFill_ThruSectionErrorStatus.BRepFill_ThruSectionErrorStatus_WrongUsage
BRepFill_ThruSectionErrorStatus_Null3DCurve = BRepFill_ThruSectionErrorStatus.BRepFill_ThruSectionErrorStatus_Null3DCurve
BRepFill_ThruSectionErrorStatus_Failed = BRepFill_ThruSectionErrorStatus.BRepFill_ThruSectionErrorStatus_Failed

class BRepFill_TransitionStyle(IntEnum):
    BRepFill_Modified: int = ...
    BRepFill_Right: int = ...
    BRepFill_Round: int = ...

BRepFill_Modified = BRepFill_TransitionStyle.BRepFill_Modified
BRepFill_Right = BRepFill_TransitionStyle.BRepFill_Right
BRepFill_Round = BRepFill_TransitionStyle.BRepFill_Round

class BRepFill_TypeOfContact(IntEnum):
    BRepFill_NoContact: int = ...
    BRepFill_Contact: int = ...
    BRepFill_ContactOnBorder: int = ...

BRepFill_NoContact = BRepFill_TypeOfContact.BRepFill_NoContact
BRepFill_Contact = BRepFill_TypeOfContact.BRepFill_Contact
BRepFill_ContactOnBorder = BRepFill_TypeOfContact.BRepFill_ContactOnBorder

class brepfill:
    @staticmethod
    def Axe(Spine: TopoDS_Shape, Profile: TopoDS_Wire, AxeProf: gp_Ax3, Tol: float) -> bool: ...
    @staticmethod
    def ComputeACR(wire: TopoDS_Wire, ACR: TColStd_Array1OfReal) -> None: ...
    @staticmethod
    def Face(Edge1: TopoDS_Edge, Edge2: TopoDS_Edge) -> TopoDS_Face: ...
    @staticmethod
    def InsertACR(wire: TopoDS_Wire, ACRcuts: TColStd_Array1OfReal, prec: float) -> TopoDS_Wire: ...
    @staticmethod
    def Shell(Wire1: TopoDS_Wire, Wire2: TopoDS_Wire) -> TopoDS_Shell: ...

class BRepFill_AdvancedEvolved:
    def __init__(self) -> None: ...
    def IsDone(self, theErrorCode: Optional[int] = 0) -> bool: ...
    def Perform(self, theSpine: TopoDS_Wire, theProfile: TopoDS_Wire, theTolerance: float, theSolidReq: Optional[bool] = True) -> None: ...
    def SetParallelMode(self, theVal: bool) -> None: ...
    def SetTemporaryDirectory(self, thePath: str) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...

class BRepFill_ApproxSeewing:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, ML: BRepFill_MultiLine) -> None: ...
    def Curve(self) -> Geom_Curve: ...
    def CurveOnF1(self) -> Geom2d_Curve: ...
    def CurveOnF2(self) -> Geom2d_Curve: ...
    def IsDone(self) -> bool: ...
    def Perform(self, ML: BRepFill_MultiLine) -> None: ...

class BRepFill_CompatibleWires:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, Sections: TopTools_SequenceOfShape) -> None: ...
    def Generated(self) -> TopTools_DataMapOfShapeListOfShape: ...
    def GeneratedShapes(self, SubSection: TopoDS_Edge) -> TopTools_ListOfShape: ...
    def GetStatus(self) -> BRepFill_ThruSectionErrorStatus: ...
    def Init(self, Sections: TopTools_SequenceOfShape) -> None: ...
    def IsDegeneratedFirstSection(self) -> bool: ...
    def IsDegeneratedLastSection(self) -> bool: ...
    def IsDone(self) -> bool: ...
    def Perform(self, WithRotation: Optional[bool] = True) -> None: ...
    def SetPercent(self, percent: Optional[float] = 0.01) -> None: ...
    def Shape(self) -> TopTools_SequenceOfShape: ...

class BRepFill_ComputeCLine:
    @overload
    def __init__(self, Line: BRepFill_MultiLine, degreemin: Optional[int] = 3, degreemax: Optional[int] = 8, Tolerance3d: Optional[float] = 1.0e-5, Tolerance2d: Optional[float] = 1.0e-5, cutting: Optional[bool] = False, FirstC: Optional[AppParCurves_Constraint] = AppParCurves_TangencyPoint, LastC: Optional[AppParCurves_Constraint] = AppParCurves_TangencyPoint) -> None: ...
    @overload
    def __init__(self, degreemin: Optional[int] = 3, degreemax: Optional[int] = 8, Tolerance3d: Optional[float] = 1.0e-05, Tolerance2d: Optional[float] = 1.0e-05, cutting: Optional[bool] = False, FirstC: Optional[AppParCurves_Constraint] = AppParCurves_TangencyPoint, LastC: Optional[AppParCurves_Constraint] = AppParCurves_TangencyPoint) -> None: ...
    def Error(self, Index: int) -> Tuple[float, float]: ...
    def IsAllApproximated(self) -> bool: ...
    def IsToleranceReached(self) -> bool: ...
    def NbMultiCurves(self) -> int: ...
    def Parameters(self, Index: int) -> Tuple[float, float]: ...
    def Perform(self, Line: BRepFill_MultiLine) -> None: ...
    def SetConstraints(self, FirstC: AppParCurves_Constraint, LastC: AppParCurves_Constraint) -> None: ...
    def SetDegrees(self, degreemin: int, degreemax: int) -> None: ...
    def SetHangChecking(self, theHangChecking: bool) -> None: ...
    def SetInvOrder(self, theInvOrder: bool) -> None: ...
    def SetMaxSegments(self, theMaxSegments: int) -> None: ...
    def SetTolerances(self, Tolerance3d: float, Tolerance2d: float) -> None: ...
    def Value(self, Index: Optional[int] = 1) -> AppParCurves_MultiCurve: ...

class BRepFill_CurveConstraint(GeomPlate_CurveConstraint):
    @overload
    def __init__(self, Boundary: Adaptor3d_CurveOnSurface, Order: int, NPt: Optional[int] = 10, TolDist: Optional[float] = 0.0001, TolAng: Optional[float] = 0.01, TolCurv: Optional[float] = 0.1) -> None: ...
    @overload
    def __init__(self, Boundary: Adaptor3d_Curve, Tang: int, NPt: Optional[int] = 10, TolDist: Optional[float] = 0.0001) -> None: ...

class BRepFill_Draft:
    def __init__(self, Shape: TopoDS_Shape, Dir: gp_Dir, Angle: float) -> None: ...
    def Generated(self, S: TopoDS_Shape) -> TopTools_ListOfShape: ...
    def IsDone(self) -> bool: ...
    @overload
    def Perform(self, LengthMax: float) -> None: ...
    @overload
    def Perform(self, Surface: Geom_Surface, KeepInsideSurface: Optional[bool] = True) -> None: ...
    @overload
    def Perform(self, StopShape: TopoDS_Shape, KeepOutSide: Optional[bool] = True) -> None: ...
    def SetDraft(self, IsInternal: Optional[bool] = False) -> None: ...
    def SetOptions(self, Style: Optional[BRepFill_TransitionStyle] = BRepFill_Right, AngleMin: Optional[float] = 0.01, AngleMax: Optional[float] = 3.0) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Shell(self) -> TopoDS_Shell: ...

class BRepFill_EdgeFaceAndOrder:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, anEdge: TopoDS_Edge, aFace: TopoDS_Face, anOrder: GeomAbs_Shape) -> None: ...

class BRepFill_Evolved:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, Spine: TopoDS_Wire, Profile: TopoDS_Wire, AxeProf: gp_Ax3, Join: Optional[GeomAbs_JoinType] = GeomAbs_Arc, Solid: Optional[bool] = False) -> None: ...
    @overload
    def __init__(self, Spine: TopoDS_Face, Profile: TopoDS_Wire, AxeProf: gp_Ax3, Join: Optional[GeomAbs_JoinType] = GeomAbs_Arc, Solid: Optional[bool] = False) -> None: ...
    def Bottom(self) -> TopoDS_Shape: ...
    def GeneratedShapes(self, SpineShape: TopoDS_Shape, ProfShape: TopoDS_Shape) -> TopTools_ListOfShape: ...
    def IsDone(self) -> bool: ...
    def JoinType(self) -> GeomAbs_JoinType: ...
    @overload
    def Perform(self, Spine: TopoDS_Wire, Profile: TopoDS_Wire, AxeProf: gp_Ax3, Join: Optional[GeomAbs_JoinType] = GeomAbs_Arc, Solid: Optional[bool] = False) -> None: ...
    @overload
    def Perform(self, Spine: TopoDS_Face, Profile: TopoDS_Wire, AxeProf: gp_Ax3, Join: Optional[GeomAbs_JoinType] = GeomAbs_Arc, Solid: Optional[bool] = False) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Top(self) -> TopoDS_Shape: ...

class BRepFill_FaceAndOrder:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, aFace: TopoDS_Face, anOrder: GeomAbs_Shape) -> None: ...

class BRepFill_Filling:
    def __init__(self, Degree: Optional[int] = 3, NbPtsOnCur: Optional[int] = 15, NbIter: Optional[int] = 2, Anisotropie: Optional[bool] = False, Tol2d: Optional[float] = 0.00001, Tol3d: Optional[float] = 0.0001, TolAng: Optional[float] = 0.01, TolCurv: Optional[float] = 0.1, MaxDeg: Optional[int] = 8, MaxSegments: Optional[int] = 9) -> None: ...
    @overload
    def Add(self, anEdge: TopoDS_Edge, Order: GeomAbs_Shape, IsBound: Optional[bool] = True) -> int: ...
    @overload
    def Add(self, anEdge: TopoDS_Edge, Support: TopoDS_Face, Order: GeomAbs_Shape, IsBound: Optional[bool] = True) -> int: ...
    @overload
    def Add(self, Support: TopoDS_Face, Order: GeomAbs_Shape) -> int: ...
    @overload
    def Add(self, Point: gp_Pnt) -> int: ...
    @overload
    def Add(self, U: float, V: float, Support: TopoDS_Face, Order: GeomAbs_Shape) -> int: ...
    def Build(self) -> None: ...
    def Face(self) -> TopoDS_Face: ...
    @overload
    def G0Error(self) -> float: ...
    @overload
    def G0Error(self, Index: int) -> float: ...
    @overload
    def G1Error(self) -> float: ...
    @overload
    def G1Error(self, Index: int) -> float: ...
    @overload
    def G2Error(self) -> float: ...
    @overload
    def G2Error(self, Index: int) -> float: ...
    def Generated(self, S: TopoDS_Shape) -> TopTools_ListOfShape: ...
    def IsDone(self) -> bool: ...
    def LoadInitSurface(self, aFace: TopoDS_Face) -> None: ...
    def SetApproxParam(self, MaxDeg: Optional[int] = 8, MaxSegments: Optional[int] = 9) -> None: ...
    def SetConstrParam(self, Tol2d: Optional[float] = 0.00001, Tol3d: Optional[float] = 0.0001, TolAng: Optional[float] = 0.01, TolCurv: Optional[float] = 0.1) -> None: ...
    def SetResolParam(self, Degree: Optional[int] = 3, NbPtsOnCur: Optional[int] = 15, NbIter: Optional[int] = 2, Anisotropie: Optional[bool] = False) -> None: ...

class BRepFill_Generator:
    def __init__(self) -> None: ...
    def AddWire(self, Wire: TopoDS_Wire) -> None: ...
    def Generated(self) -> TopTools_DataMapOfShapeListOfShape: ...
    def GeneratedShapes(self, SSection: TopoDS_Shape) -> TopTools_ListOfShape: ...
    def GetStatus(self) -> BRepFill_ThruSectionErrorStatus: ...
    def IsMutableInput(self) -> bool: ...
    def Perform(self) -> None: ...
    def ResultShape(self, theShape: TopoDS_Shape) -> TopoDS_Shape: ...
    def SetMutableInput(self, theIsMutableInput: bool) -> None: ...
    def Shell(self) -> TopoDS_Shell: ...

class BRepFill_LocationLaw(Standard_Transient):
    def Abscissa(self, Index: int, Param: float) -> float: ...
    def CurvilinearBounds(self, Index: int) -> Tuple[float, float]: ...
    def D0(self, Abscissa: float, Section: TopoDS_Shape) -> None: ...
    def DeleteTransform(self) -> None: ...
    def Edge(self, Index: int) -> TopoDS_Edge: ...
    def GetStatus(self) -> GeomFill_PipeError: ...
    def Holes(self, Interval: TColStd_Array1OfInteger) -> None: ...
    def IsClosed(self) -> bool: ...
    def IsG1(self, Index: int, SpatialTolerance: Optional[float] = 1.0e-7, AngularTolerance: Optional[float] = 1.0e-4) -> int: ...
    def Law(self, Index: int) -> GeomFill_LocationLaw: ...
    def NbHoles(self, Tol: Optional[float] = 1.0e-7) -> int: ...
    def NbLaw(self) -> int: ...
    def Parameter(self, Abscissa: float) -> Tuple[int, float]: ...
    def PerformVertex(self, Index: int, InputVertex: TopoDS_Vertex, TolMin: float, OutputVertex: TopoDS_Vertex, Location: Optional[int] = 0) -> None: ...
    def TransformInCompatibleLaw(self, AngularTolerance: float) -> None: ...
    def TransformInG0Law(self) -> None: ...
    def Vertex(self, Index: int) -> TopoDS_Vertex: ...
    def Wire(self) -> TopoDS_Wire: ...

class BRepFill_MultiLine(AppCont_Function):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, Face1: TopoDS_Face, Face2: TopoDS_Face, Edge1: TopoDS_Edge, Edge2: TopoDS_Edge, Inv1: bool, Inv2: bool, Bissec: Geom2d_Curve) -> None: ...
    def Continuity(self) -> GeomAbs_Shape: ...
    def Curves(self, Curve: Geom_Curve, PCurve1: Geom2d_Curve, PCurve2: Geom2d_Curve) -> None: ...
    def FirstParameter(self) -> float: ...
    def IsParticularCase(self) -> bool: ...
    def LastParameter(self) -> float: ...
    @overload
    def Value(self, U: float) -> gp_Pnt: ...
    def Value3dOnF1OnF2(self, U: float, P3d: gp_Pnt, PF1: gp_Pnt2d, PF2: gp_Pnt2d) -> None: ...
    def ValueOnF1(self, U: float) -> gp_Pnt2d: ...
    def ValueOnF2(self, U: float) -> gp_Pnt2d: ...

class BRepFill_OffsetAncestors:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, Paral: BRepFill_OffsetWire) -> None: ...
    def Ancestor(self, S1: TopoDS_Edge) -> TopoDS_Shape: ...
    def HasAncestor(self, S1: TopoDS_Edge) -> bool: ...
    def IsDone(self) -> bool: ...
    def Perform(self, Paral: BRepFill_OffsetWire) -> None: ...

class BRepFill_OffsetWire:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, Spine: TopoDS_Face, Join: Optional[GeomAbs_JoinType] = GeomAbs_Arc, IsOpenResult: Optional[bool] = False) -> None: ...
    def GeneratedShapes(self, SpineShape: TopoDS_Shape) -> TopTools_ListOfShape: ...
    def Init(self, Spine: TopoDS_Face, Join: Optional[GeomAbs_JoinType] = GeomAbs_Arc, IsOpenResult: Optional[bool] = False) -> None: ...
    def IsDone(self) -> bool: ...
    def JoinType(self) -> GeomAbs_JoinType: ...
    def Perform(self, Offset: float, Alt: Optional[float] = 0.0) -> None: ...
    def PerformWithBiLo(self, WSP: TopoDS_Face, Offset: float, Locus: BRepMAT2d_BisectingLocus, Link: BRepMAT2d_LinkTopoBilo, Join: Optional[GeomAbs_JoinType] = GeomAbs_Arc, Alt: Optional[float] = 0.0) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Spine(self) -> TopoDS_Face: ...

class BRepFill_Pipe:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, Spine: TopoDS_Wire, Profile: TopoDS_Shape, aMode: Optional[GeomFill_Trihedron] = GeomFill_IsCorrectedFrenet, ForceApproxC1: Optional[bool] = False, GeneratePartCase: Optional[bool] = False) -> None: ...
    def Edge(self, ESpine: TopoDS_Edge, VProfile: TopoDS_Vertex) -> TopoDS_Edge: ...
    def ErrorOnSurface(self) -> float: ...
    def Face(self, ESpine: TopoDS_Edge, EProfile: TopoDS_Edge) -> TopoDS_Face: ...
    def FirstShape(self) -> TopoDS_Shape: ...
    def Generated(self, S: TopoDS_Shape, L: TopTools_ListOfShape) -> None: ...
    def LastShape(self) -> TopoDS_Shape: ...
    def Perform(self, Spine: TopoDS_Wire, Profile: TopoDS_Shape, GeneratePartCase: Optional[bool] = False) -> None: ...
    def PipeLine(self, Point: gp_Pnt) -> TopoDS_Wire: ...
    def Profile(self) -> TopoDS_Shape: ...
    def Section(self, VSpine: TopoDS_Vertex) -> TopoDS_Shape: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Spine(self) -> TopoDS_Shape: ...

class BRepFill_PipeShell(Standard_Transient):
    def __init__(self, Spine: TopoDS_Wire) -> None: ...
    @overload
    def Add(self, Profile: TopoDS_Shape, WithContact: Optional[bool] = False, WithCorrection: Optional[bool] = False) -> None: ...
    @overload
    def Add(self, Profile: TopoDS_Shape, Location: TopoDS_Vertex, WithContact: Optional[bool] = False, WithCorrection: Optional[bool] = False) -> None: ...
    def Build(self) -> bool: ...
    def DeleteProfile(self, Profile: TopoDS_Shape) -> None: ...
    def ErrorOnSurface(self) -> float: ...
    def FirstShape(self) -> TopoDS_Shape: ...
    def Generated(self, S: TopoDS_Shape, L: TopTools_ListOfShape) -> None: ...
    def GetStatus(self) -> GeomFill_PipeError: ...
    def IsReady(self) -> bool: ...
    def LastShape(self) -> TopoDS_Shape: ...
    def MakeSolid(self) -> bool: ...
    def Profiles(self, theProfiles: TopTools_ListOfShape) -> None: ...
    @overload
    def Set(self, Frenet: Optional[bool] = False) -> None: ...
    @overload
    def Set(self, Axe: gp_Ax2) -> None: ...
    @overload
    def Set(self, BiNormal: gp_Dir) -> None: ...
    @overload
    def Set(self, SpineSupport: TopoDS_Shape) -> bool: ...
    @overload
    def Set(self, AuxiliarySpine: TopoDS_Wire, CurvilinearEquivalence: Optional[bool] = True, KeepContact: Optional[BRepFill_TypeOfContact] = BRepFill_NoContact) -> None: ...
    def SetDiscrete(self) -> None: ...
    def SetForceApproxC1(self, ForceApproxC1: bool) -> None: ...
    @overload
    def SetLaw(self, Profile: TopoDS_Shape, L: Law_Function, WithContact: Optional[bool] = False, WithCorrection: Optional[bool] = False) -> None: ...
    @overload
    def SetLaw(self, Profile: TopoDS_Shape, L: Law_Function, Location: TopoDS_Vertex, WithContact: Optional[bool] = False, WithCorrection: Optional[bool] = False) -> None: ...
    def SetMaxDegree(self, NewMaxDegree: int) -> None: ...
    def SetMaxSegments(self, NewMaxSegments: int) -> None: ...
    def SetTolerance(self, Tol3d: Optional[float] = 1.0e-4, BoundTol: Optional[float] = 1.0e-4, TolAngular: Optional[float] = 1.0e-2) -> None: ...
    def SetTransition(self, Mode: Optional[BRepFill_TransitionStyle] = BRepFill_Modified, Angmin: Optional[float] = 1.0e-2, Angmax: Optional[float] = 6.0) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Simulate(self, NumberOfSection: int, Sections: TopTools_ListOfShape) -> None: ...
    def Spine(self) -> TopoDS_Wire: ...

class BRepFill_Section:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, Profile: TopoDS_Shape, V: TopoDS_Vertex, WithContact: bool, WithCorrection: bool) -> None: ...
    def IsLaw(self) -> bool: ...
    def IsPunctual(self) -> bool: ...
    def ModifiedShape(self, theShape: TopoDS_Shape) -> TopoDS_Shape: ...
    def OriginalShape(self) -> TopoDS_Shape: ...
    def Set(self, IsLaw: bool) -> None: ...
    def Vertex(self) -> TopoDS_Vertex: ...
    def Wire(self) -> TopoDS_Wire: ...
    def WithContact(self) -> bool: ...
    def WithCorrection(self) -> bool: ...

class BRepFill_SectionLaw(Standard_Transient):
    def ConcatenedLaw(self) -> GeomFill_SectionLaw: ...
    def Continuity(self, Index: int, TolAngular: float) -> GeomAbs_Shape: ...
    def CurrentEdge(self) -> TopoDS_Edge: ...
    def D0(self, U: float, S: TopoDS_Shape) -> None: ...
    def IndexOfEdge(self, anEdge: TopoDS_Shape) -> int: ...
    def Init(self, W: TopoDS_Wire) -> None: ...
    def IsConstant(self) -> bool: ...
    def IsDone(self) -> bool: ...
    def IsUClosed(self) -> bool: ...
    def IsVClosed(self) -> bool: ...
    def IsVertex(self) -> bool: ...
    def Law(self, Index: int) -> GeomFill_SectionLaw: ...
    def NbLaw(self) -> int: ...
    def Vertex(self, Index: int, Param: float) -> TopoDS_Vertex: ...
    def VertexTol(self, Index: int, Param: float) -> float: ...

class BRepFill_SectionPlacement:
    @overload
    def __init__(self, Law: BRepFill_LocationLaw, Section: TopoDS_Shape, WithContact: Optional[bool] = False, WithCorrection: Optional[bool] = False) -> None: ...
    @overload
    def __init__(self, Law: BRepFill_LocationLaw, Section: TopoDS_Shape, Vertex: TopoDS_Shape, WithContact: Optional[bool] = False, WithCorrection: Optional[bool] = False) -> None: ...
    def AbscissaOnPath(self) -> float: ...
    def Transformation(self) -> gp_Trsf: ...

class BRepFill_Sweep:
    def __init__(self, Section: BRepFill_SectionLaw, Location: BRepFill_LocationLaw, WithKPart: bool) -> None: ...
    def Build(self, ReversedEdges: TopTools_MapOfShape, Tapes: BRepFill_DataMapOfShapeHArray2OfShape, Rails: BRepFill_DataMapOfShapeHArray2OfShape, Transition: Optional[BRepFill_TransitionStyle] = BRepFill_Modified, Continuity: Optional[GeomAbs_Shape] = GeomAbs_C2, Approx: Optional[GeomFill_ApproxStyle] = GeomFill_Location, Degmax: Optional[int] = 11, Segmax: Optional[int] = 30) -> None: ...
    def ErrorOnSurface(self) -> float: ...
    def InterFaces(self) -> TopTools_HArray2OfShape: ...
    def IsDone(self) -> bool: ...
    def Sections(self) -> TopTools_HArray2OfShape: ...
    def SetAngularControl(self, AngleMin: Optional[float] = 0.01, AngleMax: Optional[float] = 6.0) -> None: ...
    def SetBounds(self, FirstShape: TopoDS_Wire, LastShape: TopoDS_Wire) -> None: ...
    def SetForceApproxC1(self, ForceApproxC1: bool) -> None: ...
    def SetTolerance(self, Tol3d: float, BoundTol: Optional[float] = 1.0, Tol2d: Optional[float] = 1.0e-5, TolAngular: Optional[float] = 1.0e-2) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def SubShape(self) -> TopTools_HArray2OfShape: ...
    def Tape(self, Index: int) -> TopoDS_Shape: ...

class BRepFill_TrimEdgeTool:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, Bisec: Bisector_Bisec, S1: Geom2d_Geometry, S2: Geom2d_Geometry, Offset: float) -> None: ...
    def AddOrConfuse(self, Start: bool, Edge1: TopoDS_Edge, Edge2: TopoDS_Edge, Params: TColgp_SequenceOfPnt) -> None: ...
    def IntersectWith(self, Edge1: TopoDS_Edge, Edge2: TopoDS_Edge, InitShape1: TopoDS_Shape, InitShape2: TopoDS_Shape, End1: TopoDS_Vertex, End2: TopoDS_Vertex, theJoinType: GeomAbs_JoinType, IsOpenResult: bool, Params: TColgp_SequenceOfPnt) -> None: ...
    def IsInside(self, P: gp_Pnt2d) -> bool: ...

class BRepFill_TrimShellCorner:
    def __init__(self, theFaces: TopTools_HArray2OfShape, theTransition: BRepFill_TransitionStyle, theAxeOfBisPlane: gp_Ax2, theIntPointCrossDir: gp_Vec) -> None: ...
    def AddBounds(self, Bounds: TopTools_HArray2OfShape) -> None: ...
    def AddUEdges(self, theUEdges: TopTools_HArray2OfShape) -> None: ...
    def AddVEdges(self, theVEdges: TopTools_HArray2OfShape, theIndex: int) -> None: ...
    def HasSection(self) -> bool: ...
    def IsDone(self) -> bool: ...
    def Modified(self, S: TopoDS_Shape, theModified: TopTools_ListOfShape) -> None: ...
    def Perform(self) -> None: ...

class BRepFill_TrimSurfaceTool:
    def __init__(self, Bis: Geom2d_Curve, Face1: TopoDS_Face, Face2: TopoDS_Face, Edge1: TopoDS_Edge, Edge2: TopoDS_Edge, Inv1: bool, Inv2: bool) -> None: ...
    def IntersectWith(self, EdgeOnF1: TopoDS_Edge, EdgeOnF2: TopoDS_Edge, Points: TColgp_SequenceOfPnt) -> None: ...
    def IsOnFace(self, Point: gp_Pnt2d) -> bool: ...
    def ProjOn(self, Point: gp_Pnt2d, Edge: TopoDS_Edge) -> float: ...
    def Project(self, U1: float, U2: float, Curve: Geom_Curve, PCurve1: Geom2d_Curve, PCurve2: Geom2d_Curve) -> GeomAbs_Shape: ...

class BRepFill_ACRLaw(BRepFill_LocationLaw):
    def __init__(self, Path: TopoDS_Wire, Law: GeomFill_LocationGuide) -> None: ...

class BRepFill_Edge3DLaw(BRepFill_LocationLaw):
    def __init__(self, Path: TopoDS_Wire, Law: GeomFill_LocationLaw) -> None: ...

class BRepFill_EdgeOnSurfLaw(BRepFill_LocationLaw):
    def __init__(self, Path: TopoDS_Wire, Surf: TopoDS_Shape) -> None: ...
    def HasResult(self) -> bool: ...

class BRepFill_NSections(BRepFill_SectionLaw):
    @overload
    def __init__(self, S: TopTools_SequenceOfShape, Build: Optional[bool] = True) -> None: ...
    @overload
    def __init__(self, S: TopTools_SequenceOfShape, Trsfs: GeomFill_SequenceOfTrsf, P: TColStd_SequenceOfReal, VF: float, VL: float, Build: Optional[bool] = True) -> None: ...
    def ConcatenedLaw(self) -> GeomFill_SectionLaw: ...
    def Continuity(self, Index: int, TolAngular: float) -> GeomAbs_Shape: ...
    def D0(self, Param: float, S: TopoDS_Shape) -> None: ...
    def IsConstant(self) -> bool: ...
    def IsVertex(self) -> bool: ...
    def Vertex(self, Index: int, Param: float) -> TopoDS_Vertex: ...
    def VertexTol(self, Index: int, Param: float) -> float: ...

class BRepFill_ShapeLaw(BRepFill_SectionLaw):
    @overload
    def __init__(self, V: TopoDS_Vertex, Build: Optional[bool] = True) -> None: ...
    @overload
    def __init__(self, W: TopoDS_Wire, Build: Optional[bool] = True) -> None: ...
    @overload
    def __init__(self, W: TopoDS_Wire, L: Law_Function, Build: Optional[bool] = True) -> None: ...
    def ConcatenedLaw(self) -> GeomFill_SectionLaw: ...
    def Continuity(self, Index: int, TolAngular: float) -> GeomAbs_Shape: ...
    def D0(self, Param: float, S: TopoDS_Shape) -> None: ...
    def Edge(self, Index: int) -> TopoDS_Edge: ...
    def IsConstant(self) -> bool: ...
    def IsVertex(self) -> bool: ...
    def Vertex(self, Index: int, Param: float) -> TopoDS_Vertex: ...
    def VertexTol(self, Index: int, Param: float) -> float: ...

class BRepFill_DraftLaw(BRepFill_Edge3DLaw):
    def __init__(self, Path: TopoDS_Wire, Law: GeomFill_LocationDraft) -> None: ...
    def CleanLaw(self, TolAngular: float) -> None: ...

# harray1 classes
# harray2 classes
# hsequence classes

